package com.lc.yygh.msm.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.lc.yygh.msm.service.MsmService;
import com.lc.yygh.msm.utils.ConstantPropertiesUtils;
import com.lc.yygh.vo.msm.MsmVo;
import com.zhenzi.sms.ZhenziSmsClient;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.HashMap;
import java.util.Map;
@Service
public class MsmServiceImpl implements MsmService {
    @Override
    public boolean send(String phone, String code) {
        //判断手机号是否为空
        if(StringUtils.isEmpty(phone)) {
            return false;
        }
        //整合榛子云短信服务
        String apiUrl = ConstantPropertiesUtils.API_URL;//这几个值是共有的，可以直接拿到
        String appId = ConstantPropertiesUtils.APP_ID;
        String appSecret = ConstantPropertiesUtils.APP_SECRET;
        String templateId = ConstantPropertiesUtils.TEMPLATE_ID;

        Map<String, Object> params = new HashMap<String, Object>();
        params.put("number", phone);
        params.put("templateId", templateId);
        String[] templateParams = new String[2];
        templateParams[0] = code;
        templateParams[1] = "2";
        params.put("templateParams", templateParams);
        ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
        try {
            String result = client.send(params);
            Map map = JSONObject.parseObject(result, Map.class);//把json格式字符串转化成Map
            return map.get("data").toString().equals("发送成功");//如果是true，就返回true
            /*bug：人家给你规定了发送成功的data就是"发送成功"，所以这里一定是”发送成功“，刚开始写成发送陈功导致一直返回false*/
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }

    @Override
    public boolean send(MsmVo msmVo) {
        if(!StringUtils.isEmpty(msmVo.getPhone())) {
            boolean isSend = this.send(msmVo.getPhone(), msmVo.getParam());
            return isSend;
        }
        return false;
    }

    private boolean send(String phone, Map<String,Object> param) {
        //判断手机号是否为空
        if (StringUtils.isEmpty(phone)) {
            return false;
        }
        //整合榛子云短信服务
        String apiUrl = ConstantPropertiesUtils.API_URL;
        String appId = ConstantPropertiesUtils.APP_ID;
        String appSecret = ConstantPropertiesUtils.APP_SECRET;
        String templateId ="5664";
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("number", phone);
        params.put("templateId", templateId);
        String[] templateParams = new String[1];
        templateParams[0] = JSONObject.toJSONString(param);
        params.put("templateParams", templateParams);
        ZhenziSmsClient client = new ZhenziSmsClient(apiUrl, appId, appSecret);
        try {
            String result = client.send(params);
            Map map = JSONObject.parseObject(result, Map.class);
            return map.get("data").toString().equals("发送成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return  false;
    }
    /*官网原文：send方法用于单条发送短信,所有请求参数需要封装到Map中,所有请求参数请参考下表返回结果是json格式的字符串, code: 发送状态，0为成功。
    非0为发送失败，可从data中查看错误信息 注: 测试发送短信内容不要使用"你好"或"12132"全数字形式，这种短信内容没有具体的意义，可能会被运营商屏蔽
{
   "code":0,
   "data":"发送成功"
 }*/
}
